gemeenten_shapefile = 'gadm41_NLD_1.shp'
gdf = gpd.read_file(gemeenten_shapefile)
gdf = gdf[~gdf['NAME_1'].isin(['Zeeuwse meren', 'IJsselmeer'])]
gdf.loc[gdf['NAME_1'] == 'Fryslân', 'NAME_1'] = 'Friesland'
gdf.loc[gdf['NAME_1'] == 'NA', 'NAME_1'] = 'Zuid-Holland'
dataset = pd.read_csv('inkomen_van_personen_gemeente.csv', sep=',', thousands='.')[0:12]
dataset['Mediaan persoonlijk inkomen'] = dataset['Mediaan persoonlijk inkomen'].str.replace(',', '.').astype(float)
merged = gdf.merge(dataset, how='left', left_on='NAME_1', right_on='Regio\'s')
counties_geojson = merged.__geo_interface__
# Create Plotly figure
fig = go.Figure(go.Choroplethmapbox(
geojson=counties_geojson,
locations=merged.index,
z=merged['Mediaan persoonlijk inkomen'],
colorscale='reds',
zmin=merged['Mediaan persoonlijk inkomen'].min(),
zmax=merged['Mediaan persoonlijk inkomen'].max(),
marker_opacity=0.5,
marker_line_width=1.5,
hovertemplate='<b>%{properties.NAME_1}</b><br>' +
'Mediaan inkomen: %{z:.2f} (x1,000€) <extra></extra>',
))
# Update layout
fig.update_layout(
mapbox_style="carto-positron",
mapbox_zoom=5,
mapbox_center={"lat": 52.1326, "lon": 5.2913},
margin={"r": 0, "t": 30, "l": 0, "b": 0},
title='Mediaan persoonlijk inkomen in Nederlandse provincies in duizenden euro\'s',
coloraxis_colorbar=dict(
title='Mediaan persoonlijk inkomen (€)',
ticksuffix=' €',
)
)
# Show the Plotly figure
fig.show()